package com.sy.mapper;

import com.sy.entity.CheckHome;
import com.sy.entity.Homework;
import com.sy.entity.StudentHome;
import com.sy.entity.StudentHomeworkUpdate;
import com.sy.vo.StudentHomeVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Date;
import java.util.List;

/**
 * @Author:fma
 * @Date: 2021/10/12 10:53
 */
public interface StudentHomeMapper {
    /**
     * 得到所有的作业状态
     *
     * @param
     * @return 全部的作业信息
     */
    List<StudentHome> getHomesState();


    /**
     * 得到当前学生的所有的作业状态
     *
     * @param sno 学生学号
     * @return 当前学生的作业信息
     */
    List<StudentHome> getHomeStateBySno(Integer sno);

    /**
     * 条件查询作业的状态信息，作业的标题或发布时间来搜索作业状态信息
     *
     * @param studentHomeVo 作业状态模型
     * @return 根据条件查询得到的作业信息
     */
    List<StudentHome> getStatusByConditions(StudentHomeVo studentHomeVo);

    /**
     * 条件查询作业的状态信息，作业的标题或发布时间来搜索作业状态信息
     *
     * @param sno 学生学号
     * @return 得到的该学生全部作业信息
     */
    List<StudentHome> getStatusBySno(Integer sno);

    /**
     * @param tno   教师编号
     * @param title 标题
     * @return 根据条件查询得到的作业信息
     * @Author 范富强
     * 条件查询作业的信息，教师的编号或作业的标题或发布时间来搜索学生的作业信息
     */
    List<CheckHome> getStudentHomeWorksByConditions(@Param("tno") Integer tno,
                                                    @Param("title") String title);

    /**
     * @param limit 标题
     * @return 根据条件查询得到的作业信息
     * @Author 范富强
     * 条件查询作业的信息，教师的编号或作业的标题或发布时间来搜索学生的作业信息
     */
    List<CheckHome> getStudentHomeWorksByConditions2(@Param("limit") String limit);

    /**
     * @param limit 标题
     * @return 根据条件查询得到的作业信息
     * @Author 范富强
     * 条件查询作业的信息，教师的编号或作业的标题或发布时间来搜索学生的作业信息
     */
    List<CheckHome> getStudentHomeWorksByConditions3(@Param("limit") String limit,@Param("title") String title);

    /**
     * @Author fma
     * 学生提交作业
     * @param studentHomeworkUpdate
     * @return
     */
    Boolean updateStudentHomework(StudentHomeworkUpdate studentHomeworkUpdate);


    /**
     * @Author cxl
     * 根据条件获取上传作业链接
     * @param hid
     * @param sno
     * @return
     */
    List<String> getAllCorrectfileByHidAndSno(@Param("hid")Integer hid,@Param("sno")Integer sno);

    /**
     * @Author cxl
     * 删除之前提交的作业
     * @param hid
     * @param sno
     * @return
     */
    Integer deleteOriginalHomework(@Param("hid")Integer hid,@Param("sno")Integer sno);

    /**
     * @Author cxl
     * 作业添加至学生作业
     * @param hid
     * @param sno
     * @param createdate
     * @return
     */
    Integer addStudentHomework(@Param("hid")Integer hid,@Param("state")String state,@Param("sno")Integer sno, @Param("createdate")Date createdate);

    /**
     * @Author cxl
     * 作业完成后更改作业状态
     * @param hid
     * @param sno
     * @return
     */
    Boolean changeHomeworkState(@Param("hid")Integer hid,@Param("sno")Integer sno,@Param("state")String state);

    /**
     * @Author cxl
     * 根据hid删除学生作业表中作业
     * @param hid
     * @return
     */
    Boolean deletePublishHomeworks(Integer hid);
    /**
     * @Author zhf
     * 根据hid删除学生作业表中作业
     * @param limit,title
     * @return
     */

    List<CheckHome>getStudentHomeWorksByTitle(@Param("limit")String limit,@Param("title")String title );
}
